using System;
using SF.Code.Extension.ComputerLanguages;
using SG.Lang.Dry.Mirrors;

namespace SG.Lang.Dry.Base
{
    public abstract class Element
    {
        private readonly ElementRecord _elementRecord;

        protected Element(ref ElementRecord elementRecord)
        {
            _elementRecord = elementRecord;
        }

        public Guid Guid
        {
            get { return _elementRecord.Guid; }
        }

        public DateTime Time
        {
            get { return _elementRecord.Time; }
        }

        public TimeType TimeType
        {
            get { return _elementRecord.TimeType; }
        }

        public Visibility Visibility
        {
            get { return _elementRecord.Visibility; }
        }

        public ElementKind Kind
        {
            get { return _elementRecord.Kind; }
        }
    }
}